#include <iostream>
#include <unistd.h>

int main()
{   
    /* 验证暂停状态 T
     * 在运行过程中 kill -19 PID*/
    while(true);
    /* 验证孤儿进程, 父进程结束了子进程未结束；
     * 僵尸进程，子进程结束了，父进程没有检测到
    int id = fork();
    if (id == 0)
    {
        // child 
        while (true)
        {
            std::cout<<"i am child, running"<<std::endl;
            sleep(2);
        }
    }
    else
    {
        while (true)
        {
            std::cout<<"do nothing" << std::endl;
            sleep(20);
        }
    }
    */
    /* 验证状态 R+ */
    //while(true);
    
    /* 验证等待状态 S+
     * ICPU已经运行完毕，但IO还没有运行完毕，此刻进程要等待IO运行完毕*/
    //while(true)
    //{
    //    std::cout<<"hello world"<<std::endl;
    //}

    /* 验证进程的创建
    int ret = fork();
    while(1)
    {
        if (ret == 0)
            std::cout << "hello world!" << "\tpid : " << getpid() << "\tchild : " << getppid() << "\tid : " << ret << std::endl;
        else 
            std::cout << "hello world!" << "\tpid : " << getpid() << "\tchild : " << getppid() << "\tid : " << std::endl;
        sleep(1);
    }
    */    

    return 0;
}
